DO NOT MERGE Truncate new line characters when adding string to config Bug: 70808273 Test: test with a device with newline character in name Change-Id: I8729e12ad5851ee1ffbcb7c08e9a659f768ffc21 (cherry picked from commit dd9bbfc2458569d9fecf35f7503d1b89b4c69aa0)
diff --git a/osi/src/config.cc b/osi/src/config.cc index 1019721..fc64d47 100644 --- a/osi/src/config.cc +++ b/osi/src/config.cc
@@ -34,6 +34,7 @@ #include "osi/include/allocator.h" #include "osi/include/list.h" #include "osi/include/log.h" +#include "log/log.h" typedef struct { char* key; @@ -217,17 +218,27 @@ list_append(config->sections, sec); } + std::string value_string = value; + std::string value_no_newline; + size_t newline_position = value_string.find("\n"); + if (newline_position != std::string::npos) { + android_errorWriteLog(0x534e4554, "70808273"); + value_no_newline = value_string.substr(0, newline_position); + } else { + value_no_newline = value_string; + } + for (const list_node_t* node = list_begin(sec->entries); node != list_end(sec->entries); node = list_next(node)) { entry_t* entry = static_cast<entry_t*>(list_node(node)); if (!strcmp(entry->key, key)) { osi_free(entry->value); - entry->value = osi_strdup(value); + entry->value = osi_strdup(value_no_newline.c_str()); return; } } - entry_t* entry = entry_new(key, value); + entry_t* entry = entry_new(key, value_no_newline.c_str()); list_append(sec->entries, entry); }